var validate = (opt, val, _this) => {
  // 获取全部字段
  const keys = Object.keys(opt);
  let flag = true;
  keys.forEach(key => {
    if (flag) {
      // 获取当前字段的全部校验条件
      const { name, type = 'string', required = true, max = null, min = null, pattern = null  } = opt[key];
      if (required) {
        // 必填项
        if (isNull(val[key])) {
          flag = false;
          _this.$toast(`${name}不得为空`);
        } else {
          if (type === 'number') {
            // 最大值
            if (max !== null && Number(val[key]) > max) {
              flag = false;
              _this.$toast(`${name}不得超过${max}`);
              return;
            };
            // 最小值
            if (min !== null && Number(val[key]) < min) {
              flag = false;
              _this.$toast(`${name}不得少于${min}位`);
              return;
            };
          } else {
            // 最大长度
            if (max !== null && val[key].length > max) {
              flag = false;
              _this.$toast(`${name}不得超过${max}位`);
              return;
            };
            // 最小长度
            if (min !== null && val[key].length < min) {
              flag = false;
              _this.$toast(`${name}不得少于${min}位`);
              return;
            };
          }
          // 正则表达式
          if (pattern !== null) {
            const reg = new RegExp(pattern)
            if (!reg.test(val[key])) {
              flag = false;
              _this.$toast(`请输入正确的${name}`);
              return;
            }
          };
        };
      } else {
        // 最大长度
        if (max !== null && val[key].length > max) {
          flag = false;
          _this.$toast(`${name}不得超过${max}位`);
          return;
        };
        // 最小长度
        if (min !== null && val[key].length < min) {
          flag = false;
          _this.$toast(`${name}不得少于${min}位`);
          return;
        };
        // 正则表达式
        if (pattern !== null && !pattern.test(val[key])) {
          flag = false;
          _this.$toast(`请输入正确的${name}`);
          return;
        };
      };
    };
  });
  return flag;
};

function isNull(str) {
  if (str === '' || str === undefined || str === null || str.length === 0) {
    return true
  }
  return false
}

window.validate = validate;